package com.wei.czz.framework.store.service;

import com.wei.czz.common.po.store.AssignStoreListPo;
import com.wei.czz.common.tool.PageDto;
import com.wei.czz.common.vo.store.assign.AssignFormVo;
import com.wei.czz.common.vo.store.assign.AssignVo;
import com.wei.czz.framework.store.entity.AssignStoreEntity;
import com.wei.czz.framework.store.entity.StoreEntity;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-12-01 11:37:24
 * className: AssignStoreService
 * version: 1.0
 * description:
 */
public interface AssignStoreService {

    /**
     * 保存商店分单数据操作
     * @param storeId    商店主键
     * @param submitType 提交类型
     */
    void saveAssignStore(Long storeId, Integer submitType);

    /**
     * 分页获取用户被分单商店操作
     * @param assignFormVo 参数对象
     * @return 分页结果
     */
    PageDto<AssignStoreListPo> getAssignStorePageList(AssignFormVo assignFormVo);

    /**
     * 分页获取可以审核分单商店操作
     * @param assignFormVo 参数对象
     * @return 分页结果
     */
    PageDto<AssignStoreListPo> getAssignableStorePageList(AssignFormVo assignFormVo);

    /**
     * 获取用户关联的商店分单数据操作
     * @param userIdCollection 用户主键集合
     * @return 商店分单数据列表
     */
    List<AssignStoreEntity> getassignStoreList(Collection<Long> userIdCollection);

    /**
     * 获取用户被分单商店操作
     * @param userId 用户主键
     * @return 商店列表
     */
    List<StoreEntity> getUserAssignStoreList(Long userId);

    /**
     * 获取用户被分单商店数量操作
     * @param userId 用户主键
     * @return 商店数量
     */
    Integer getUserAssignStoreCount(Long userId);

    /**
     * 获取提交审核商店所属的用户主键集合操作
     * @param userId 用户主键
     * @return 用户主键集合
     */
    Set<Long> getStoreUserIdSet(Long userId);

    /**
     * 商店分单操作
     * @param assignVo 参数对象
     */
    void assignStore(AssignVo assignVo);

    /**
     * 删除商店分单数据操作
     * @param storeIdList    商店主键列表
     * @param submitTypeList 提交类型列表
     */
    void batchDeleteAssignStore(List<Long> storeIdList, List<Integer> submitTypeList);

}

